package com.nbcio.pm.mapper;

import com.nbcio.common.mybatis.core.mapper.BaseMapperPlus;
import com.nbcio.pm.domain.PmTask;
import com.nbcio.pm.domain.vo.PmTaskVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 任务管理Mapper接口
 *
 * @author nbacheng
 */
public interface PmTaskMapper extends BaseMapperPlus<PmTask, PmTaskVo> {

    /**
     * 查询任务列表
     *
     * @param task 任务
     * @return 任务集合
     */
    List<PmTaskVo> selectPmTaskList(PmTask task);

    /**
     * 查询任务详细信息
     *
     * @param taskId 任务ID
     * @return 任务详细信息
     */
    PmTaskVo selectPmTaskById(Long taskId);

    /**
     * 查询任务树结构
     *
     * @param projectId 项目ID
     * @return 任务树
     */
    List<PmTaskVo> selectTaskTree(@Param("projectId") Long projectId);

    /**
     * 查询用户任务列表
     *
     * @param userId 用户ID
     * @param status 任务状态
     * @return 任务列表
     */
    List<PmTaskVo> selectUserTasks(@Param("userId") Long userId, @Param("status") String status);

    /**
     * 更新任务状态
     *
     * @param taskId 任务ID
     * @param status 状态
     * @return 更新结果
     */
    int updateTaskStatus(@Param("taskId") Long taskId, @Param("status") String status);

    /**
     * 分配任务
     *
     * @param taskId 任务ID
     * @param assigneeId 负责人ID
     * @return 更新结果
     */
    int assignTask(@Param("taskId") Long taskId, @Param("assigneeId") Long assigneeId);
}
